<!-- BEGIN: CLEAN_Address - Define JavaScript procedures used for calling AJAX for Address Verification -->
<input type=checkbox id="CLN_OVERRIDE_ADDRESS" value=1 onClick="ajaxVerifyAddress();"> <LABEL class=input_text for=CLN_OVERRIDE_ADDRESS>Override Address Verification</LABEL>
<BR>&nbsp;
<div id="AddrSuggestionList" class=PSEDITBOXLABEL style="display: none;"></div>
<script type="text/javascript">
// Define the global variables
var gvAddr1, gvAddr2, gvAddr3, gvAddr4, gvCity, gvState, gvPostal, gvCounty, gvCountry;
var gvAddressType, gvAddressUrl, gvObjectName;
var gvOverrideAddress = document.getElementById('CLN_OVERRIDE_ADDRESS');
//
// Verify the address through the CLEAN_Address Engine when enough of the address has been entered
//
function ajaxVerifyAddress() {
  if (!gvOverrideAddress.checked
     && (
        (gvAddr1.value != ''
     || (gvAddr2 && gvAddr2.value != '')
     || (gvAddr3 && gvAddr3.value != '')
     || (gvAddr4 && gvAddr4.value != '')
        )
        && ((gvCity && gvCity.value != '') && (gvState && gvState.value != ''))
        // Use the following syntax if State is a Dropdown list
        //&& ((gvCity && gvCity.value != '') && (gvState && gvState.options[gvState.selectedIndex].value != ''))
          || ((gvCity && gvCity.value != '') && (gvCountry && gvCountry.options[gvCountry.selectedIndex].value != ''))
          || (gvPostal && gvPostal.value != '')
          )) {
    if (gvAddr1.value.lastIndexOf(' .') == gvAddr1.value.length-2) {
      gvAddr1.value = gvAddr1.value.substr(0, gvAddr1.value.length-2);
    } 
    // call AJAX Address Verification if we have enough information
    ajaxSendAddress(gvAddressUrl);
  } else {
  	// Set a space and period at the end of address line 1 so batch processing can identify this address as overridden
  	// The batch processing will remove the period and set the Override error code
    if (gvOverrideAddress.checked
        && gvAddr1.value.lastIndexOf(' .') != gvAddr1.value.length-2) {
      gvAddr1.value += ' .';
    } 
    document.getElementById('AddrSuggestionList').innerHTML = ""; 
    return;
  }
}
//
// call of XmlHttpRequest
//
function ajaxSendAddress(purl) {
  var request;
  var browser = navigator.appName;
  var url = purl     +  '?address_1='  + escape(gvAddr1.value);
  if (gvAddr2) url   += '&address_2='  + escape(gvAddr2.value);
  if (gvAddr3) url   += '&address_3='  + escape(gvAddr3.value);
  if (gvAddr4) url   += '&address_4='  + escape(gvAddr4.value);
  if (gvCity)  url   += '&city='       + escape(gvCity.value);
  if (gvState) url   += '&state='      + escape(gvState.value);
  // Use the following syntax if State is a Dropdown list
  //if (gvState) url += '&state='       + escape(gvState.options[gvState.selectedIndex].value);
  if (gvPostal)  url += '&postal_code=' + escape(gvPostal.value);
  if (gvCompany) url += '&company_name='+ escape(gvCompany.value);
  if (gvCountry) url += '&country_code='+ escape(gvCountry.options[gvCountry.selectedIndex].value);
  if (gvCounty)  url += '&county_code=' + escape(gvCounty.value);
  url += '&fv_address_type='+ escape(gvAddressType);
  url += '&fv_object_name=' + escape(gvObjectName);
  if (browser != "Microsoft Internet Explorer") {
    try {
      netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
    } catch (e) {
      null; //alert("Permission UniversalBrowserRead denied.");
    }
    req = new XMLHttpRequest();
    req.onreadystatechange = processAddressResponse;
    req.open("GET", url, true);
    req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    req.send(null);
  } else if (window.ActiveXObject) { // IE
    req = new ActiveXObject("Microsoft.XMLHTTP");
    req.onreadystatechange = processAddressResponse;
    req.open("GET", url, true);
    req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    req.send();
  } else {
    return; // Navigator non compatible        
  }
}
//
// process the return of the "ajaxCallRemotePage" parsing out the returned string
//
function processAddressResponse() {
  if (   req.readyState == 4 // Complete
      && req.status == 200)  // OK response
  {
    var str=req.responseText;
    var arrayOfStrings = str.split('|');
    if (str.indexOf('alert(') != -1) {
      document.getElementById('AddrSuggestionList').innerHTML = ""; 
      document.getElementById('AddrSuggestionList').style.display = 'block';
      document.getElementById('AddrSuggestionList').innerHTML = str+'<br>&nbsp;';
      return;
    }
    if (str.indexOf('|') != -1) {
      if (gvAddr1)     gvAddr1.value   = arrayOfStrings[0];
      if (gvAddr2)     gvAddr2.value   = arrayOfStrings[1];
      if (gvAddr3)     gvAddr3.value   = arrayOfStrings[2];
      if (gvAddr4)     gvAddr4.value   = arrayOfStrings[3];
      if (gvCity)      gvCity.value    = arrayOfStrings[4];
      if (gvState)     gvState.value   = arrayOfStrings[5];
      if (gvPostal)    gvPostal.value  = arrayOfStrings[6];
      if (gvCounty)    gvCounty.value  = arrayOfStrings[7];
      if (gvCountry)   gvCountry.value = arrayOfStrings[8];
      var strErrorDesc  = arrayOfStrings[9];
      // Suggestion List
      document.getElementById('AddrSuggestionList').innerHTML = ""; 
      if (strErrorDesc.length > 1) {
        document.getElementById('AddrSuggestionList').style.display = 'block';
        document.getElementById('AddrSuggestionList').innerHTML = strErrorDesc+'<br>&nbsp;';
      }
    }
  }
}

gvAddressUrl  = 'http://127.0.0.1/pls/DAD/CLEAN_Address_APP_AJAX.Verify_Address_AJAX';
/* NOTE: Address Type - specify different address types for address type specific rules in the user exit package */
gvAddressType = '';
/* NOTE: Object Name - customize for different address pages in your application to be able to have different rules or standards */
gvObjectName  = 'AJAX.ADDRESS_PAGE_NAME';
/* NOTE: Edit the HTML fields below to specify the Element ID associated with the INPUT tag */
gvCompany = document.getElementById('COMPANY_NAME');
gvAddr1   = document.getElementById('ADDRESS_1');
gvAddr2   = document.getElementById('ADDRESS_2');
gvAddr3   = document.getElementById('ADDRESS_3');
gvAddr4   = document.getElementById('ADDRESS_4');
gvCity    = document.getElementById('CITY');
gvState   = document.getElementById('STATE');
gvPostal  = document.getElementById('POSTAL_CODE');
gvCounty  = document.getElementById('COUNTY');
gvCountry = document.getElementById('COUNTRY');
if (gvAddr1)   gvAddr1.onchange = ajaxVerifyAddress;
if (gvAddr2)   gvAddr2.onchange = ajaxVerifyAddress;
if (gvAddr3)   gvAddr3.onchange = ajaxVerifyAddress;
if (gvAddr4)   gvAddr4.onchange = ajaxVerifyAddress;
if (gvCity)    gvCity.onchange = ajaxVerifyAddress;
if (gvState)   gvState.onchange = ajaxVerifyAddress;
if (gvPostal)  gvPostal.onchange = ajaxVerifyAddress;
if (gvCounty)  gvCounty.onchange = ajaxVerifyAddress;
if (gvCountry) gvCountry.onchange = ajaxVerifyAddress;
</script>
<!-- END: CLEAN_Address - Set the JavaScript triggering event on the Address fields -->
